#!/usr/bin/perl
#
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
#
# SPDX-License-Identifier: MPL-2.0
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
#
# See the COPYRIGHT file distributed with this work for additional
# information regarding copyright ownership.

eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
    if $running_under_some_shell;
			# this emulates #! processing on NIH machines.
			# (remove #! line above if indigestible)

$master = 1;

eval '$'.$1.'$2;' while $ARGV[0] =~ /^([A-Za-z_0-9]+=)(.*)/ && shift;
			# process any FOO=bar switches

$, = ' ';		# set output field separator
$\ = "\n";		# set output record separator

$change = 0;
$status = 0;
$wasblank = 1;

line: while (<>) {
    ($Fld1,$Fld2,$Fld3,$Fld4) = split(' ', $_, 9999);
    $change = 0 if (!$master && /^\s+--- .* ---$/);
    if ($Fld1 =~ /^[1-9][0-9]*\.$/ && $Fld2 =~ /^\[.*\]$/) {
	if ($change != 0 && $Fld1 >= $change) {
	    print 'bad change number', $Fld1;
	    $status = 1;
	}
	if ($master && $change != 0 && $Fld1 + 1 != $change) {
	    print 'bad change number', $Fld1;
	    $status = 1;
	}
	$change = $Fld1;
	if (!$wasblank) {
	    print 'missing blank line before change', $Fld1;
	    $status = 1;
	}
    }
    if (/^\s+--- .* ---$/) {
	if (!$wasblank) {
	    print 'missing blank line before release marker for', $Fld2;
	    $status = 1;
	}
    }
    if ($Fld1 eq "") {
	$wasblank = 1;
    } else {
	$wasblank = 0;
    }
}

exit $status;
